﻿using System;
using System.Collections.Generic;
using System.Text;

namespace ServiceCore.Tool.JD_Pay
{
    public class CodeContent
    {
        //    JD_data_model shopData = new JD_data_model()
        //    {
        //        merchantNo = "112265731",
        //        desKey = "YWQ4I2FwjIUNWB+eSoA3Z81r1kp1OHPZ",
        //        mdKey = "tudSlvqqj0J4IyHIlNtx5qkXlgGG1Zcj"
        //    };
        public static dynamic Api_Url
        {
            get
            {
                dynamic result = new System.Dynamic.ExpandoObject();
                result.GetOpenid = "https://payx.jd.com/code/authorizeCode"; //获取openid
                //生产环境
                //result.unifiedOrder = "https://apipayx.jd.com/m/unifiedOrder"; //http://testapipayx.jd.com/m/unifiedOrder //统一下单
                //result.querytrade = "https://apipayx.jd.com/m/querytrade";//"http://testapipayx.jd.com/m/querytrade"; //查询订单
                //result.refund = "https://apipayx.jd.com/m/refund";//"http://testapipayx.jd.com/m/refund"; //退款
                //result.orderclose = "https://apipayx.jd.com/m/orderclose";//"http://testapipayx.jd.com/m/orderclose"; //关闭订单
                //result.queryrefund = "https://apipayx.jd.com/m/queryrefund"; //http://testapipayx.jd.com/m/queryrefund  //查询退款单
                //result.bill = "https://apipayx.jd.com/m/bill"; //http://testapipayx.jd.com/m/bill //下载对账单 

                //测试环境
                result.unifiedOrder = "http://testapipayx.jd.com/m/unifiedOrder";  //统一下单
                result.querytrade = "http://testapipayx.jd.com/m/querytrade"; //查询订单
                result.refund = "http://testapipayx.jd.com/m/refund"; //退款
                result.orderclose = "http://testapipayx.jd.com/m/orderclose"; //关闭订单
                result.queryrefund = "http://testapipayx.jd.com/m/queryrefund";  //查询退款单
                result.bill = "http://testapipayx.jd.com/m/bill"; //下载对账单 

                return result;
            }
        }
        /// <summary>
        /// 返回码对照
        /// </summary>
        public static Dictionary<string, string> result_code
        {
            get
            {
                Dictionary<string, string> result = new Dictionary<string, string>();
                result.Add("0000", "受理成功");
                result.Add("0001", "验签失败，报文有可能被篡改，请核实sign签名");
                result.Add("0002", "缺少代理商户号，请传agentNo字段");
                result.Add("0003", "获取秘钥失败，请联系京东侧商务经理提供服务商秘钥");
                result.Add("0004", "缺少流水号，请传serialNo字段");
                result.Add("0005", "流水号重复，请更换serialNo字段值");
                result.Add("0006", "申请单不存在，请确认serialNo、regEmail、merchantNo是否正确");
                result.Add("0007", "图片保存失败，图片大小不能超过200k");
                result.Add("0008", "缺少图片文件，请按接口文档要求上传图片");
                result.Add("0009", "文本参数校验失败");
                result.Add("0010", "查不到联行号相关信息，请修改subBankCode字段");
                result.Add("0011", "图片参数校验失败");
                result.Add("0012", "商户信息录入失败，请更换流水号serialNo后重新申请");
                result.Add("0018", "商户尚未入驻成功，请先调用商户入驻接口");
                result.Add("0020", "聚合产品需要提供结算银行预留手机号，请修改settleCardPhone字段");
                result.Add("0022", "产品提交失败，请更换流水号serialNo后重新申请");
                result.Add("0025", "此商户号不属于当前服务商，请核实");
                result.Add("0027", "报文解密失败，请核实3DES秘钥或加密报文");
                result.Add("0028", "商户注册邮箱已被占用，请更换regEmail");
                result.Add("0030", "未查询到数据");
                result.Add("0031", "门店所在省名称不规范，请按《行政区划编码表》规范传值");
                result.Add("0032", "门店所在市名称不规范，请按《行政区划编码表》规范传值");
                result.Add("0033", "门店所在省-市没有下辖关系，请确认市在省管辖范围内，按《行政区划编码表》规范传值");
                result.Add("0035", "门店所在市-区县没有下辖关系，请确认区县在市管辖范围内，按《行政区划编码表》规范传值");
                result.Add("0036", "该商户已有产品完成签约或正在申请中，当前状态下基础信息不允许修改");
                result.Add("0037", "该产品已完成签约或正在申请中，当前状态不允许再次开通产品");
                result.Add("0039", "报文格式不正确，content-type应为multipart/form-data");
                result.Add("0040", "两次代理商户号不一致，请检查agentNo字段");
                result.Add("0041", "营业地址所在省名称不规范，请按《行政区划编码表》规范传值");
                result.Add("0042", "营业地址所在市名称不规范，请按《行政区划编码表》规范传值");
                result.Add("0043", "营业地址所在省-市没有下辖关系，请确认市在省管辖范围内，按《行政区划编码表》规范传值");
                result.Add("0045", "营业地址所在市-区县没有下辖关系，请确认区县在市管辖范围内，按《行政区划编码表》规范传值");
                result.Add("0067", "商户授权目录只能设置两个，请修改directoryList字段");
                result.Add("0068", "商户授权目录格式不正确，请修改directoryList字段");
                result.Add("0069", "商户上传的两个授权目录不能一样，请修改directoryList字段");
                return result;
            }
        }
        /// <summary>
        /// 4.2文本校验返回
        /// </summary>
        public static Dictionary<string, string> Text_check_code
        {
            get
            {
                Dictionary<string, string> result = new Dictionary<string, string>();
                result.Add("C0001", "营业执照注册号/登记号/统一社会信用代码号必为15或18位，请修改blicUscc字段");
                result.Add("C0002", "流水号为空或流水号大于64位，请修改serialNo字段");
                result.Add("C0003", "商户简称必须为2-15个汉字，请修改abMerchantName字段");
                result.Add("C0004", "商户手机号为空或商户手机号格式不正确，请修改regPhone字段");
                result.Add("C0005", "商户邮箱为空或格式非法，请修改regEmail字段");
                result.Add("C0006", "商户类型必传，且只能为E/P/N，请修改companyType字段");
                result.Add("C0007", "商户证件类型为空或商户证件类型与商户类型不匹配，请修改blicCardType字段 ");
                result.Add("C0008", "商户实体名称不能为空且必须为5-40个汉字，请修改blicCompanyName字段");
                result.Add("C0009", "营业执照注册号/登记号/统一社会信用代码号不能为空（企业/个体工商户必传），请修改blicUscc字段");
                result.Add("C0010", "营业地址省为空或长度超过32个汉字（企业/个体工商户必传），请修改blicProvince字段 ");
                result.Add("C0011", "营业地址市为空或长度超过32个汉字（企业/个体工商户必传），请修改blicCity字段 ");
                result.Add("C0012", "详细营业地址为空（企业/个体工商户必传），请修改blicAddress字段");
                result.Add("C0013", "经营范围为空（企业/个体工商户必传）且长度不能大于1000，请修改blicScope字段");
                result.Add("C0014", "营业证件到期日是否为长期不能为空，且只能为true/false，请修改blicLongTerm字段");
                result.Add("C0015", "营业证件到期日为空（企业/个体工商户必传），请修改blicValidityEnd字段");
                result.Add("C0016", "营业证件到期日必须为 长期，请修改blicValidityEnd字段");
                result.Add("C0017", "营业证件到期日格式不正确，请修改blicValidityEnd字段，正确格式参见接口文档");
                result.Add("C0018", "组织机构代码为空（企业商户使用普通五证类营业执照必传），请修改blicTrcCardNo字段");
                result.Add("C0019", "税务登记号为空（企业商户使用普通五证类营业执照必传），请修改blicObaCardNo字段");
                result.Add("C0020", "行业编码为空，请修改indTwoCode字段");
                result.Add("C0021", "法人证件类型不能为空，且只能为ID/PAS/PASTW/PASHK，请修改lepCardType字段");
                result.Add("C0022", "法人姓名为空或长度大于32位，请修改lepName字段");
                result.Add("C0023", "法人证件号码为空或长度大于50位，请修改lepCardNo字段");
                result.Add("C0024", "法人证件到期日是否为长期不能为空，且只能为true/false，请修改lepLongTerm字段");
                result.Add("C0025", "法人证件到期日为空，请修改lepValidityEnd字段");
                result.Add("C0026", "法人证件到期日必须为 长期，请修改lepValidityEnd字段");
                result.Add("C0027", "法人证件到期日格式格式不正确，请修改lepValidityEnd字段，正确格式参见接口文档");
                result.Add("C0028", "联系人姓名为空或长度大于64位，请修改contactName字段");
                result.Add("C0029", "联系人邮箱为空或长度大于64位，请修改contactEmail字段");
                result.Add("C0030", "联系人手机号为空或格式不正确，请修改contactPhone字段");
                result.Add("C0031", "线上产品，联系人省、市、地址必传，请检查contactProvince、contactCity、contactAddress字段");
                result.Add("C0032", "申请开通产品ID为空，请修改productId字段");
                result.Add("C0033", "经营网站地址,微信公众号,APP名称不能同时为空（线上产品）,请检查url、wechat、app字段");
                result.Add("C0034", "商户号必传且不大于64位，请修改merchantNo字段 ");
                result.Add("C0035", "营业证件起始日为空，或格式不正确，请修改blicValidityStart字段");
                result.Add("C0036", "法人证件起始日为空，或格式不正确，请修改lepValidityStart字段");
                result.Add("C0037", "行业编码有误，请修改indTwoCode字段，枚举参见接口文档");
                result.Add("C0038", "详细地址需包含区县信息，请修改storeAddress字段");
                result.Add("C0039", "自然人，法人证件类型只能为ID，请修改companyType和lepCardType字段");
                result.Add("C0040", "费率格式错误，请修改mfee字段");
                result.Add("C0041", "计费类型为空，请修改mfeeType字段");
                result.Add("C0042", "费率为空，请修改mfee字段");
                result.Add("C0043", "线下产品，经营门店所在省、市、详细地址均不能为空，请检查storeProvince、storeCity、storeAddress字段");
                result.Add("C0044", "经营门店所在省长度不能大于64位，请修改storeProvince字段");
                result.Add("C0045", "经营门店所在市长度不能大于64位，请修改storeCity字段");
                result.Add("C0046", "经营门店详细地址长度不能大于256位，请修改storeAddress字段");
                result.Add("C0047", "数据库操作异常或系统异常");
                result.Add("C0050", "批量导入信息表中没有此流水号");
                result.Add("C0051", "联系人省长度不能大于64位，请修改contactProvince字段");
                result.Add("C0052", "联系人市长度不能大于64位，请修改contactCity字段");
                result.Add("C0053", "联系人详细地址长度不能大于256位，请修改contactAddress字段");
                result.Add("C0054", "计费类型只能为1、2或3，阶梯费率无需单独传4，请修改mfeeType字段");
                result.Add("C0110", "商户结算银行卡账号不全为数字，请修改bankAccountNo字段");
                result.Add("C0111", "结算周期字段，请填写为T1或者D1");
                return result;
            }
        }
        /// <summary>
        /// 4.3 图片入库前校验返回编码
        /// </summary>
        public static Dictionary<string, string> Pic_check_code
        {
            get
            {
                Dictionary<string, string> result = new Dictionary<string, string>();
                result.Add("C0101", "商户结算银行名称为空，请修改bankName字段");
                result.Add("C0102", "结算户公私标识为空或标识不正确，请修改priatePublic字段");
                result.Add("C0103", "结算银行联行号为空，请修改subBankCode字段 ");
                result.Add("C0104", "商户结算银行卡账号为空，请修改bankAccountNo字段");
                result.Add("C0105", "商户结算银行卡绑定手机号，结算到法人对私账户必传，请修改settleCardPhone字");
                result.Add("C0106", "商户结算银行卡绑定手机号格式不正确，请修改settleCardPhone字段");
                result.Add("C0107", "查不到联行号相关信息，请修改subBankCode字段");
                result.Add("C0108", "结算不能为空，请修改settleToCard字段");
                result.Add("C0109", "银行账户名不能为空，请修改bankAccountName字段");
                result.Add("C0501", "营业执照照片必传，请修改blicUrla字段");
                result.Add("C0502", "组织机构代码证照片必传，请修改blicTrcUrla字段");
                result.Add("C0503", "税务登记证照片必传，请修改blicObaUrla字段");
                result.Add("C0504", "银行开户许可证照片必传，请修改occUrla字段");
                result.Add("C0505", "法人证件照片【正面】必传，请修改lepUrla字段");
                result.Add("C0506", "法人证件照片【背面】必传，请修改lepUrlb字段");
                result.Add("C0507", "线下产品，经营门店门头照片必传，请修改img字段");
                result.Add("C0508", "线下产品，经营门店出入口照片必传，请修改enterimg字段");
                result.Add("C0509", "线下产品，经营门店店内照片必传，请修改innerimg字段");
                result.Add("C0510", "自然人，法人手持证件照片必传，请修改lepUrlc字段");
                result.Add("C0511", "结算卡正面照片必传，请修改cardPhoto字段");
                result.Add("C0512", "结算给非法人对私账户，结算账户指定书图片、结算人身份证正面照、结算人身份证背面照、结算到卡的正面照必传，请检查cardPhoto、settleManPhotoFront、settleManPhotoBack、settleProtocol字段");
                result.Add("C0513", "自然人，结算人手持证件照片必传，请修改settleHoldingIDCard字段");
                result.Add("C0514", "开通POS需要上传费率，修改posFeeList字段");
                return result;
            }
        }
        /// <summary>
        /// 6.2 产品编码
        /// </summary>
        public static Dictionary<string, string> Product_Id_List
        {
            get
            {
                Dictionary<string, string> result = new Dictionary<string, string>();
                result.Add("401", "微信");
                result.Add("402", "支付宝");
                result.Add("403", "京东支付");
                result.Add("404", "POS");
                result.Add("405", "白条聚合");
                return result;
            }
        }
    }
    /// <summary>
    /// 返回请求参数
    /// </summary>
    public class Request_Params
    {
        public string merchantNo { get; set; }
        public string cipherJson { get; set; }
        public string sign { get; set; }
        public string systemId { get; set; }
    }
    /// <summary>
    /// 返回结果接收
    /// </summary>
    public class Response_Result
    {
        public string merchantNo { get; set; }
        public string cipherJson { get; set; }
        public string sign { get; set; }
        /// <summary>
        /// 当调用成功时返回true
        /// </summary>
        public bool success { get; set; }
        /// <summary>
        /// 调用失败时返回错误原因店代码
        /// </summary>
        public string errCode { get; set; }
        public string systemId { get; set; }
        /// <summary>
        /// 错误描述
        /// </summary>
        public string errCodeDes { get; set; }
    }

    public class JD_Api_Base_Params
    {
        /// <summary>
        /// 请求URL
        /// </summary>
        public string Request_URL { get; set; }
        /// <summary>
        /// 一级商户号
        /// </summary>
        public string merchantNo { get; set; }

        public string businessCode { get; set; } = "AGGRE";

        public string version { get; set; } = "V3.0";
    }
}
